# 摩斯密码字典
MORSE_CODE_DICT = {
    'A': '.-',
    'B': '-...',
    'C': '-.-.',
    'D': '-..',
    'E': '.',
    'F': '..-.',
    'G': '--.',
    'H': '....',
    'I': '..',
    'J': '.---',
    'K': '-.-',
    'L': '.-..',
    'M': '--',
    'N': '-.',
    'O': '---',
    'P': '.--.',
    'Q': '--.-',
    'R': '.-.',
    'S': '...',
    'T': '-',
    'U': '..-',
    'V': '...-',
    'W': '.--',
    'X': '-..-',
    'Y': '-.--',
    'Z': '--..',
    '1': '.----',
    '2': '..---',
    '3': '...--',
    '4': '....-',
    '5': '.....',
    '6': '-....',
    '7': '--...',
    '8': '---..',
    '9': '----.',
    '0': '-----',
    ',': '--..--',
    '.': '.-.-.-',
    '?': '..--..',
    '/': '-..-.',
    '-': '-....-', '(': '-.--.',
    ')': '-.--.-',
    ' ': '/'
}

print(type(MORSE_CODE_DICT))  # <class 'dict'>

# 反转字典，用于从摩斯密码解码
REVERSE_DICT = {value: key for key, value in MORSE_CODE_DICT.items()}


def text_to_morse(text):
    """
    将文本转换为摩斯密码
    """
    morse_code = []
    for char in text.upper():
        if char in MORSE_CODE_DICT:
            morse_code.append(MORSE_CODE_DICT[char])
        else:
            morse_code.append('?')  # 未知字符用?表示
    return ' '.join(morse_code)


def morse_to_text(morse_code):
    """
    将摩斯密码转换为文本
    """
    text = []
    # 分割摩斯码，注意这里用空格分隔每个字符的摩斯码
    morse_chars = morse_code.split(' ')
    for morse_char in morse_chars:
        if morse_char in REVERSE_DICT:
            text.append(REVERSE_DICT[morse_char])
        else:
            text.append('?')  # 未知摩斯码用?表示
    return ''.join(text)


def main():
    print("摩斯密码破解程序")
    print("=" * 30)

    while True:
        print("\n请选择操作:")
        print("1. 文本转摩斯密码")
        print("2. 摩斯密码转文本")
        print("3. 退出")

        choice = input("请输入选择 (1/2/3): ").strip()

        if choice == '1':
            text = input("请输入要转换的文本: ")
            morse_result = text_to_morse(text)
            print(f"摩斯密码: {morse_result}")

        elif choice == '2':
            morse_code = input("请输入摩斯密码 (用空格分隔每个字符的代码): ")
            text_result = morse_to_text(morse_code)
            print(f"解码结果: {text_result}")

        elif choice == '3':
            print("程序已退出!")
            break

        else:
            print("无效选择，请重新输入!")


if __name__ == "__main__":
    main()
